gusucode.com > 各种VC自绘控件源码程序 > 各种VC自绘控件源码/code/SkinControls(自绘MFC基本控件 )/SkinControls/SkinControls/SkinUIHyperLink.cpp
#include "StdAfx.h" #include "SkinUIHyperLink.h" #include "SkinUIWnd.h" CSkinUIHyperLink::CSkinUIHyperLink(void) : m_bHover(false), m_bNeedInvalidate(false), m_bLButtonDown(false) { m_crText = RGB(0,87,233); } CSkinUIHyperLink::~CSkinUIHyperLink(void) { } LPCTSTR CSkinUIHyperLink::GetClass() const { return TEXT("SkinUIHyperLink"); } void CSkinUIHyperLink::PaintText(CDC * pDC) { if (!IsVisible()) return; pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(m_crText); CFont font; LOGFONT lf; m_pFont->GetLogFont(&lf); lf.lfUnderline = m_bHover ? 1:0; font.CreateFontIndirect(&lf); pDC->SelectObject(font); pDC->DrawText(m_strText, &m_rcItem, m_uTextFormat); } //操作相关 void CSkinUIHyperLink::MouseMove(const CPoint & point) { if ((IsVisible() == false) || (IsEnabled() == false)) return; if ((m_Rgn.PtInRegion(point) == TRUE) && (!m_bNeedInvalidate) && (!m_bLButtonDown)) { m_bHover = true; m_pParentWnd->InvalidateRect(&m_rcItem, FALSE); } else if (m_Rgn.PtInRegion(point) == FALSE) { m_bHover = false; m_bNeedInvalidate = false; m_pParentWnd->InvalidateRect(&m_rcItem, FALSE); } } void CSkinUIHyperLink::MouseLeave() { if ((IsVisible() == false) || (IsEnabled() == false)) return; if (m_bHover) { m_bHover = false; m_pParentWnd->InvalidateRect(&m_rcItem, FALSE); } } void CSkinUIHyperLink::MouseLButtonDown(const CPoint & point) { if ((IsVisible() == false) || (IsEnabled() == false)) return; if ((m_Rgn.PtInRegion(point) == TRUE) ) { m_bLButtonDown = true; m_pParentWnd->SetCapture(); } } void CSkinUIHyperLink::MouseLButtonUp(const CPoint & point) { if ((IsVisible() == false) || (IsEnabled() == false)) return; ReleaseCapture(); if ((m_Rgn.PtInRegion(point) == TRUE) && m_bLButtonDown) { m_pParentWnd->LButtonClickListener(GetName()); } m_bLButtonDown = false; } BOOL CSkinUIHyperLink::MouseCursor(const CPoint & point) { if ((IsVisible() == false) || (IsEnabled() == false)) return FALSE; if ((m_Rgn.PtInRegion(point) == TRUE) ) { ::SetCursor(GetSysHandCursor()); return TRUE; } return FALSE; } void CSkinUIHyperLink::SetTextColor(COLORREF crText) { m_crText = crText; }